package com.lyf.lottery.controller.assembler;

import com.github.pagehelper.PageInfo;
import com.lyf.lottery.model.po.OptActivity;
import com.lyf.lottery.model.req.OptActivityQuery;
import org.mapstruct.DecoratedWith;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.lyf.lottery.model.vo.OptActivityVo;
import com.lyf.lottery.model.vo.OptActivityAddVo;
import com.lyf.lottery.model.vo.OptActivityUpdateVo;
import com.lyf.lottery.model.vo.OptActivityQueryVo;
import com.lyf.lottery.controller.assembler.decorator.AbstractOptActivityDecorator;
import org.springframework.util.CollectionUtils;
import java.util.List;

/**
 * OptActivity 对象适配层
 * @author lyf
 **/
@Mapper
@DecoratedWith(AbstractOptActivityDecorator.class)
public interface  OptActivityAssembler {

    OptActivityAssembler INSTANCE = Mappers.getMapper(OptActivityAssembler.class);

    /**
     * 添加VO转entity
     *
     * @param vo
     * @return com.lyf.lottery.entity.OptActivity
     * @date 2020/12/25
     */
    OptActivity getOptActivity(OptActivityAddVo vo);
    /**
     * 修改VO转entity
     *
     * @param vo
     * @return com.lyf.lottery.entity.OptActivity
     * @date 2020/12/25
     */
    OptActivity getOptActivity(OptActivityUpdateVo vo);
    /**
     * entity集合转VO集合
     *
     * @param list
     * @return java.util.List
     * @date 2020/12/25
     */
    List<OptActivityVo> getOptActivityVoList (List<OptActivity> list);

    /**
     * entity转VO
     *
     * @param entity
     * @return com.lyf.lottery.model.vo.OptActivityVo
     * @date 2020/12/25
     */
    OptActivityVo getOptActivityVo (OptActivity entity);

    /**
     * vo转value
     *
     * @param vo
     * @return com.lyf.lottery.value.OptActivityQuery
     * @date 2020/12/25
     */
    OptActivityQuery getOptActivityQuery (OptActivityQueryVo vo);

    /**
     * 分页转换
     *
     * @param pageInfo
     * @return com.github.pagehelper.PageInfo
     * @date 2020/12/25
     */
    default PageInfo<OptActivityVo> convertPageInfo(PageInfo<OptActivity> pageInfo) {
        PageInfo<OptActivityVo> resultPage = new PageInfo<>();
        resultPage.setPageNum(pageInfo.getPageNum());
        resultPage.setPageSize(pageInfo.getPageSize());
        if (!CollectionUtils.isEmpty(pageInfo.getList())) {
        List<OptActivityVo> list = getOptActivityVoList(pageInfo.getList());
            resultPage.setList(list);
            resultPage.setTotal(pageInfo.getTotal());
        }
        return resultPage;
    }
}



